home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / TPLAS20.ZIP / TPLAS.DOC < prev    next >
Encoding:
Text File  |  1994-10-12  |  27.4 KB  |  563 lines

  1. Tom's Plasma!                                 by Tom Dibble, Copyright 1994
  2.  
  3.  
  4.                               *TPLAS MANUAL*
  5.  
  6.  
  7. -----------------------------------------------------------------
  8. TPLAS (T '-Plaz):  [Abbr. "Tom's Plasma"]  Screen effects program
  9.                     by Tom Dibble.
  10. -----------------------------------------------------------------
  11.  
  12.  
  13. AUTHOR'S NOTE:
  14.  
  15. Thank-you for taking a look at my little program!  I realize there
  16. are plenty of programs at these shareware sites worthy of a second
  17. look, yet you devoted a few moments of your time to evaluating my
  18. efforts.  For that I am certainly appreciative, and I hope you are
  19. not disappointed in your expectations.
  20.  
  21. This program started out as a trivial exercise in creating a Plasma
  22. Fractal and employing a technique called "Swimming" on that fractal
  23. (see the Tech section for more info).  Further effects were then
  24. added, one atop the other, until ...  The result is a rather unique
  25. program which in function fits somewhere between the "kaleidoscope"
  26. screen effects programs such as Dazzle (from Worldwide
  27. Microtronics, Inc) and screen "saver" programs such as AfterDark
  28. (from Berkeley Labs).
  29.  
  30. To keep with the original purpose of Tom's Plasma, the release of
  31. this revision contains the entirety of the source code to create
  32. Tom's Plasma revision 1.1, which merely generated the plasma
  33. fractal and then employed the "swimming" effect.  Copyrights on
  34. this code are explained in the TPlas11.DOC file.  The document and
  35. source code files are all included in the Zip file "TPlas11.ZIP",
  36. which should be "un-zipped" using "PKUnzip" version 2.0g or newer,
  37. or using a version of the free "Unzip" newer than late 1993
  38. (compatible with PKUnzip 2.0+).
  39.  
  40. Revision 2.0 of Tom's Plasma is released as Shareware, in hopes of
  41. regaining at least *some* compensation for the many hours spent
  42. improving it, mostly in the form of knowing people are actually
  43. using it.  I wrote it with no such hopes in mind, purely as an
  44. exercise in programming, and so the price I am charging is
  45. deliberately low (well below those asked for by Dazzle and required
  46. by AfterDark), at $10.00 (US).  Benefits of registration include:
  47.  
  48.           That warm feeling of knowing you've supported Shareware!
  49.  
  50.           A Registered Version of the program, which includes the
  51.           Manual and Semi-Automatic modes detailed below.
  52.  
  53.           Optional Full Source Code (of interest to programmers out
  54.           there).  Interest in source code must be explicitly
  55.           stated on the order form.
  56.  
  57. Well, that's all the general stuff *about* this program.  I suggest
  58. you read on for more details concerning how to use the program,
  59. especially the "Keys" and "Caveats" sections.
  60.  
  61. IF YOU ARE A BUSINESS:
  62.  
  63. If you are a representative of a business, you may use the
  64. Demonstration version of Tom's Plasma ("Demo.COM") at no cost, but
  65. only on business computers in a public setting.  A public setting
  66. is defined as anywhere I could get to without having to ask anyone,
  67. or in which a large portion of people are gathered.  This includes
  68. computer shows and demonstration settings as well as some office
  69. settings.  I offer this version as free to these users because they
  70. are, in effect, my advertisement.  The Demonstration version is
  71. identical to the Unregistered version except that it does not ask
  72. you to register (and requires no registration, for qualified users)
  73. and includes an identifying effect (which simply says "You are
  74. watching a demonstration of Tom's Plasma").
  75.  
  76. Demonstration versions which include a reduced set of effects (such
  77. that the effects which are slow on a specific computer are not
  78. generated) *may* be obtained by personal correspondence with me. 
  79. The cost is $10.00 (US), just like the Registered version; however,
  80. these programs suffer the same restrictions as the Demonstration
  81. Version, and entitle the purchaser to none of the Benefits included
  82. in the Registered Version.  As a result of being analogous to the
  83. Demonstration Version, on the other hand, such reduced-effect
  84. versions of Tom's Plasma may be freely distributed, so long as they
  85. are clearly identified as reduced-effect versions.  Details
  86. concerning the distribution of these versions will be included with
  87. the program or available pre-purchase upon request.  This offer is
  88. separate from all claims concerning Revision 2.0 of Tom's Plasma,
  89. and availability is dependant on my time and whim.
  90.  
  91.  
  92. FILES WHICH SHOULD HAVE BEEN INCLUDED:
  93.  
  94.      TPLAS.COM      The program itself, unregistered.
  95.      TOMSPLAS.DAT   Data file for the program.
  96.      INSTALL.BAT    Installation batch file.
  97.      DEMOINST.BAT   Demo installation.
  98.      TPLAS11.ZIP    Old version+source.
  99.      TPLAS.DOC      This file.
  100.      REGISTER.DOC   Registration file.
  101.  
  102.  
  103. TECHNICAL STUFF NO ONE WANTS TO KNOW:
  104.  
  105. Well, you asked for it!  This is Tom's (that's me) Plasma.  It puts
  106. a quick plasma fractal (*NOT* a sin/cos function!) up on screen,
  107. then swims the fractal in a center window while cycling the colors. 
  108. That's it.  But I think that deserves some explanation, don't you?
  109.  
  110.  
  111. First off, what is plasma?
  112.  
  113. The plasma display implemented here falls into a class of images
  114. called "Fractals".  A fractal can be zoomed in infinitely without
  115. loss of detail.  Although I do not allow you to zoom in on this
  116. particular fractal, the difference between 'fractal plasma' and
  117. 'sin/cos plasma' is readily apparent.  The only real commonalities
  118. is that both generate a fully continuous array of values.  In
  119. certain applications, the values in the array are used as
  120. elevations or terrains of ground.  In this application, the values
  121. are represented by color.
  122.  
  123. The main difference between these two types of plasma, aside from
  124. the obvious visual difference, is that fractal plasma utilizes a
  125. random value by its very definition, and therefore is different
  126. every time it is generated.  Sin/cos plasma is a set function,
  127. usually implemented with zero random nature, and therefore does not
  128. change between viewings.
  129.  
  130.  
  131. Okay, so what's this "swimming" thing?
  132.  
  133. For lack of a better name, the display technique I've used here I
  134. will refer to as 'swimming'.  I originally came across swimming in 
  135. a program called "JCL-Plasm" by Jeremy Longley.  He claims to have
  136. copied the effect from Thomas Hagen.  Both implementations of
  137. swimming involved using a sin/cos plasma rather than a fractal
  138. plasma.
  139.  
  140. Swimming can best be described in a simple form of one pointer.  A
  141. large plasma fractal is generated.  Next, a pointer is assigned. 
  142. This pointer will define the top-left corner of the area of the
  143. plasma fractal which is to be displayed.  In my implementation, 1/4
  144. of the fractal is displayed at a time in the swimming window, which
  145. means the display extends 160 pixels to the right and 100 pixels to
  146. the bottom of the pointer.  Next, this pointer is moved about on
  147. the large plasma fractal.  The exact pattern the pointer follows is
  148. defined in the data file, and is a pre-generated sin/cos function.
  149.  
  150. Next, we make it twice as complex (and much, much more
  151. interesting!) by adding a second pointer.  To display both pointers
  152. in the same window, we simply add the pixel values together.  Since
  153. the pixel values have been limited to the range 0-127 we do not
  154. have to worry about overflow effects in our adding.  An earlier
  155. revision (1.1) had this problem, which created a squiggly black
  156. line in the middle of the swim window separating pixels of below
  157. 255 from those which added to above 255.
  158.  
  159. The result is a window 1/4 the size of the screen which holds a
  160. moving, bubbling plasma-looking mess.  It's hard to explain; you'll
  161. just have to look for yourself!
  162.  
  163. How about the other effects?
  164.  
  165. Though "Swimming" was the original effect in Tom's Plasma, it has
  166. been moved aside to make way for many other effects.  The first
  167. bunch of effects stem from a "flame" algorithm.
  168.  
  169. In real life, the phenomenon of fire is caused by little pockets of
  170. air becoming so hot that the atoms within that pocket actually
  171. *glow*.  Depending on the atoms in the air, many varieties of flame
  172. colors may be seen.  Perhaps the most common, however, ranges from
  173. no glowing through a red glowing, then an orange and yellow glow,
  174. and finally a white glow at the warmest points.  These heat pockets
  175. are created by a strongly exothermic (heat-emitting) chemical
  176. reaction as well as by natural convective forces in the air.  In
  177. real life, they are also caused by embers which get caught in this
  178. air stream while burning, but this particular effect is not
  179. replicated here.
  180.  
  181. The "flame" effect is firmly based in this explanation of fire,
  182. though it is not often explained as such.  Our "fire" is in the
  183. form of a 320x202 pixel, flat "heat-map".  All combustion takes
  184. place at the bottom row of the map, and is a result of random
  185. "flare-ups" and "flare-downs".  The two heat-transfer effects --
  186. convection and conduction -- are treated separately; first all the
  187. values of the heat-map are shifted one position upwards, then each
  188. value is set to the average of the values surrounding it.  To
  189. create realism, this latter effect takes the form of the sum of the
  190. values above and below, plus half the sum of the values to the left
  191. and right, plus the original value, all divided by four.
  192.  
  193. This "heat-map" is then the basis of four different TPlas effects: 
  194. Inferno, Convection, Melting, and Slime.  The first two are direct,
  195. theory-based applications, the first making the heat map take on a
  196. certain set of colors and overlaying it atop the fractal and the
  197. second adding the heat map to the original fractal to create a
  198. ripple-like effect.  The second two are the result of flipping this
  199. "heat-map" upside down and adding or overlaying it with the plasma
  200. fractal.  Not exactly theory-based, but they look pretty darned
  201. cool anyway.
  202.  
  203. Texture mapping is the basis for two more effects.  In "texture
  204. mapping" the program includes a "texture map" the size of the final
  205. picture detailing where from the original picture the final picture
  206. should get its value.  For instance, the texture map for the top-
  207. left pixel might point to position "1,1" in the original picture. 
  208. The value at point "1,1" in the original picture is then placed in
  209. the top-left position of the final picture.
  210.  
  211. Maps exist for two entities: a globe whose surface is made of the
  212. original picture, and a tinted crystal globe which refracts the
  213. image of the original picture, the colors tinted randomly.  These
  214. texture maps are both included in the data file and loaded on
  215. program start-up.  They are the basis for the "Globe (Tinted
  216. Crystal)" and "Planet and Moon" effects.
  217.  
  218. The tinting for the globe is done in a rather interesting manner. 
  219. Each color in the original palette is composed of a red, blue, and
  220. green element.  Before tinting, I choose a number (0, 1, or 2) by
  221. which each of these elements is "shifted" to create the tinted
  222. palette.  This number corresponds to the power of two by which the
  223. original element value is to be divided.  For instance, if the
  224. 'Red' element is to be shifted by '2', the original red value would
  225. be divided by 2-squared (2*2 = 4) to obtain the tinted red value. 
  226. The result is a tint which lets through a certain percentage each
  227. of red, green, and blue, any of 100%, 50%, or 25% of each element
  228. of each individual color.  The tinting is then done by making
  229. colors 0-127 be the un-tinted colors and 128-255 be the tinted
  230. colors on screen, and adding 128 to the color value obtained by the
  231. globe's texture map.  The only negative aspect of this is that if
  232. the swim-window was left on screen before the globe started up, it
  233. might contain colors above 127, and so the background may have
  234. tinted colors in it.  Perhaps later versions will solve this
  235. problem or avoid it by getting rid of the swim window before the
  236. globe starts bouncing, but I like it when the refraction of the
  237. globe goes across the hard edges of the swim-window, so I'm not
  238. going to take it out yet ...
  239.  
  240.  
  241. Would you like to do any miscellaneous rambling?
  242.  
  243. Yes I would, thank you!
  244.  
  245. Everything in this little program has been around for a while, as
  246. far as I can tell.  Certainly isn't cutting-edge!  The only really
  247. new and original thought which went into this went into speeding up
  248. the plasma generation section of the code (by upwards of ten
  249. times!).  As I have said before, the plasma fractal is based on
  250. random values.  Random values take a lot of time to calculate
  251. because they involve several rather inefficient instructions
  252. (namely, multiplies and divides) to be made by the CPU.  Since I
  253. already had a data file for all of the movement pointers and color
  254. palette data (this was before I generated the palette at run-time),
  255. I decided I might as well have 64 kilobytes of random values in
  256. there as well, pre-computed to save time.
  257.  
  258. But wait! you say.  It's different every time, isn't it?!?  And the
  259. answer is, yes, it is.  That is because the random number
  260. 'generator' (the code which reads the number from an array in
  261. memory) uses a pointer which tells it which number is next in the
  262. sequence.  At program start-up, this number is initialized to a sum
  263. of the hour, minute, second, and hundredths of a second on the
  264. system clock (which is also how a random number generator is
  265. initialized, btw).  Thus, though the sequence is essentially the
  266. same every time you run it, the number for each call to the random
  267. number generator is different.
  268.  
  269. Secondly (and lastly!) this is my first true assembly program.  And
  270. it shows.  I have been programming in 'C' for a good three years
  271. now, but that is hardly the same as programming in assembly, is it? 
  272. Furthermore, I'm not a computer-science major here in college; I'm
  273. a Chemical Engineer.  I have taken one class which had anything at
  274. all to do with computers the year before last, and learned
  275. everything else I know from a few books here and there and, most
  276. importantly, the UseNet.  Why am I telling you this?  So that you
  277. know, as you laugh to yourself about my coding style, that I'm
  278. certainly not doing this as a living!  I coded this because I
  279. enjoyed it, and I needed something new and interesting to put up on
  280. my screen.
  281.  
  282. If you want to contact me about anything here, this is where I can
  283. be reached until May, 1996 (or 1995, if I don't get into the MS
  284. program!):
  285.  
  286.           tomster@wpi.wpi.edu
  287.  
  288. Or, via the good old post office, at
  289.  
  290.           Tom Dibble
  291.           WPI box 2466
  292.           Worcester, MA  01609
  293.  
  294. My mailbox is always open!
  295.  
  296.                                                                  Tom Dibble
  297.                                                             3-18-94, 7-1-94
  298.  
  299.  
  300. BEHIND THE SCENES:
  301.  
  302. TPlas currently resides in about ten assembly files, a few data
  303. generation programs (written in 'C'), and this documentation.  The
  304. assembly files are such that any version (demo, unregistered,
  305. registered, or beta) can be assembled at any time (no copying of
  306. source code, etc).  The registered version is then registered to a
  307. specific person and company by way of a 'C' program which changes
  308. a few (40) bytes in the beginning of the file.  It was written on
  309. a 386-SX/16 based computer running DOS.  Hence, no support of
  310. floating point units for those who care about such things. 
  311. Assembly is taken care of by Turbo Assembler and linking by Turbo
  312. Link, both from Borland International, Inc.  Documentation is
  313. generated in Word Perfect.
  314.  
  315.  
  316. ABOUT THE AUTHOR:
  317.  
  318. I'm a student of Chemical Engineering at WPI, in friendly
  319. Worcester, MA.  Currently I'm a senior, which is why things are
  320. running a bit slow right now.  Next year I am planning on attending
  321. graduate school also in Chemical Engineering, also at WPI,
  322. focussing on working with thin palladium-based films for the
  323. separation of hydrogen from a reacting mixture.  I first sat down
  324. to a computer at the end of the summer of 1991, when I was looking
  325. into buying this beast next to me.  I started programming batch and
  326. script files that same year, moving up to 'C' in the spring of 1992
  327. (during finals week).  I started programming in assembly because
  328. that was the only CS class available when I wanted to take it, in
  329. the spring of 1993.  A year went by in which I programmed very
  330. little in assembly (mostly in 'C'), and then in the early part of
  331. this year I began work on Tom's Plasma.  I enjoy programming,
  332. although I would never dream of doing it as a living.
  333.  
  334.  
  335. EFFECTS LISTING:
  336.  
  337. This section of the document attempts to give you a bit of a
  338. description of the various modes, so you'll know what you are
  339. seeing when you see it.  Tom's Plasma starts off in Automatic Mode
  340. (Semi-Automatic mode in the Registered Version), and can only be
  341. switched into another mode if it has been registered.  Remember, in
  342. this mode, to see another effect hit the space-bar.  It may look
  343. like nothing is happening; that is because most effects have 'kill-
  344. screens' which are activated when the effect exits.  If you are
  345. really impatient, hit the space-bar again while the kill-screen is
  346. in effect and another effect will start up instantly.
  347.  
  348. Plasma Cycling:     This is an old and respected effect; colors
  349.                     move through a plasma fractal.
  350.  
  351. Swimming:           A small window in the middle of the screen
  352.                     opens up and the plasma in it starts to
  353.                     move/change.
  354.  
  355. Blue Sky:           Another window in the middle of the screen,
  356.                     except this time the rest of the screen is
  357.                     blacked out, and the window holds a vision of
  358.                     blue skies and spider-web-like clouds.
  359.  
  360. Inferno:            This effect is quite aptly named.  It is a
  361.                     nice, big fire set on the bottom of your
  362.                     screen.
  363.  
  364. Slime:              Blue-green slime pours down from the top of
  365.                     the screen.
  366.  
  367. Convection:         Ripples of convecting heat rise from the
  368.                     bottom of the screen.
  369.  
  370. Melting:            The screen ripples and melts from the top of
  371.                     the screen.
  372.  
  373. Globe, Tinted Crystal:   A small crystal globe let loose on the
  374.                     screen, bouncing about inside an invisible
  375.                     rectangular border.
  376.  
  377. Planet and Moon:    A starry night, a planet spins as its lone
  378.                     moon circles overhead.  Yeah, I know the stars
  379.                     wouldn't twinkle if seen from space.  And yes,
  380.                     I also know that that moon is far, far too
  381.                     close to the planet.  Details, details.
  382.  
  383.  
  384. KEYBOARD COMMANDS:
  385.  
  386. All Modes:
  387.  
  388.           <Enter>   Generate a new fractal (random screen clear).
  389.           <Esc>     Get me the heck out of here!
  390.           'A'       Enter Automatic Mode
  391.           'S'       Enter Semi-Automatic Mode (Registered Version
  392.                     Only!)
  393.           'M        Enter Manual Mode (Registered Version Only!)
  394.  
  395. Automatic Mode:
  396.  
  397.           <Space>   New Fractal                       
  398.  
  399. Manual Mode:
  400.  
  401.           '1'-'3'   New fractal of variable smoothness.  '1'
  402.                     (rough) is default.
  403.           <Space>   Toggle between Cycle and Swim.
  404.           'c'       Convection.
  405.           'i'       Inferno.
  406.           'm'       Melt Screen.
  407.           's'       Slime.
  408.           'b'       Blue Sky.
  409.           'p'       Planet and Moon.
  410.           'g'       Globe (clear crystal)
  411.  
  412. Semi-Automatic Mode:
  413.  
  414.           (Same as Manual except <Space> same as Automatic Mode)
  415.  
  416.  
  417. CAVEATS ABOUT KEYBOARD COMMANDS (Please read):
  418.  
  419. You knew this was coming.  Some of the effects of Tom's Plasma (all
  420. the 'fire' effects, most noticeably) have a 'kill-screen'.  When a
  421. key is hit to start up another effect and these effects are on
  422. screen, they go through their kill-screen.  For the flame effects,
  423. this kill-screen moves them up (or down) off the screen until they
  424. dissapear.  For the Planet and Moon and Blue Sky effects this kill-
  425. screen throws the screen back and then lets the original colors of
  426. the Plasma bleed in.  After the kill-screen is done, your key
  427. command will be processed.  If you are impatient, you may hit the
  428. key again, and the kill-screen will end and your key will be
  429. processed immediately.  If you press a key which is different from
  430. the first one you pressed, the *second* key will be processed,
  431. *not* the first!
  432.  
  433. The only real difficulty this gives rise to is when a kill-screen
  434. is already in effect because the timer went out on the effect.  The
  435. flames kill screen takes about a second before it is noticeable. 
  436. Hitting a key twice in this instance may produce unwanted results. 
  437. For instance, if the kill-screen for 'Slime' just started, and you
  438. are in Semi-Automatic Mode, and you press 'i' twice to start up
  439. 'Inferno', the first 'i' will *start* 'Inferno', while the *second*
  440. 'i' will tell it to restart!  You will go directly into the kill-
  441. screen for 'Inferno', and then it will start again!
  442.  
  443. This is not a major inconvenience, in most cases.  Simply realize,
  444. if this happens, that this is what has happened (the machine has
  445. *not* decided it just doesn't like you anymore!)  Hit the key a
  446. third time if necessary to restart the intended effect immediately.
  447.  
  448.  
  449. ACKNOWLEDGEMENTS:
  450.  
  451. I couldn't have done this without a good lot of support from those
  452. around me.  First and foremost, Jodi, who put up with me all those
  453. times I got an idea and had to put it in *right away*.  Next, my
  454. "Beta Testers", including Ken Griest, Tom Guyette, and John Henry,
  455. who pointed out many an improvement.  Finally, all those who
  456. praised and criticized the earlier revision, 1.1.  If I missed
  457. anyone, fill your name in here: _______________
  458.  
  459.  
  460. REVISION HISTORY:
  461.  
  462. This is by no means a finished work.  I don't know how much more
  463. I'll do with it before sending it to the great archive in the sky,
  464. but, time permitting, I plan to do a bit more with it at least ... 
  465. Perhaps I should add some sort of menuing system rather than
  466. relying solely upon mnemonics (which are destined to run out
  467. soon!).  But then, if I ever get that working it's definitely 3.0
  468. time, as that will involve some major changes.  Of course, I'm
  469. always on the lookout for new effects to try out (suggestions
  470. welcome!)  Anyway, this is where it is now and where it's been, for
  471. what it's worth.
  472.  
  473.  
  474. October 10, 1994:  Revision 2.0
  475.      Wow, it's been a while playing with this new version, and it
  476.      shows!  We've gone beyond just Swimming by quite a bit now,
  477.      and made a product people might actually pay money for!  As a
  478.      result, this revision is not free anymore; a $10 registration
  479.      fee is required after 30 days, which gives the user lots of
  480.      extra goodies in the control department as well as full, re-
  481.      organized, source-code if he so desires.  A quick run-down on
  482.      what was added and approximately when:  First came fire.  I
  483.      played around with a demo of a flame algorithm to make it
  484.      full-screen, then tweaked the algorithm itself until it
  485.      produced a semi-realistic effect and worked in real-time. 
  486.      This effect takes on four forms in TPlas 2.0:  Inferno,
  487.      Convection, Slime, and Melting.  After I had all these effects
  488.      to play around with, I decided it would be a good idea to have
  489.      the computer randomize the order in which they were put up on
  490.      screen.  This required some minor re-working of the individual
  491.      functions to get it to work as a sort of add-on, and later
  492.      brought on a major restructuring of the program into three
  493.      major modes.  Originally, this was called 'random-mode' and
  494.      was entered and exited via the 'r' key.  This led to great
  495.      confusion, however, so I added the 'R' key to exit and the 'r'
  496.      key to enter, and later, when the aforementioned restructuring
  497.      took place, the 'A' key to enter ('Auto-Mode') and the 'M',
  498.      'S', or <Esc> keys to exit.  In the restructuring I designated
  499.      all lower-case keys as effects hotkeys, all upper-case as
  500.      mode-change hotkeys.  A context-sensitive help system (for
  501.      what little difference in "context" there is) was added during
  502.      the restructuring. The flames algorithm acquired an exit-
  503.      screen, where the flames move up the screen with no generation
  504.      until they disappear.  Then I started playing with texture-
  505.      mapping.  The first effect in this area was the 'Globe, Clear
  506.      Crystal' effect:  a bouncing, crystal-clear ball over the
  507.      Plasma display.  Next came the Planet, to which I added stars
  508.      and an encircling Moon to form the Planet and Moon effect.  
  509.      The plasma fractal was made to wrap-around left to right, top
  510.      to bottom in order for the planet not to look totally goofy.
  511.      Somewhere in there I also added the Blue Sky effect and the
  512.      wash-out screen clear/regeneration sequence.  The fly-back
  513.      exit was added to the Planet and Moon and Blue Sky effects and
  514.      delays were introduced so that a maximum speed exists for all
  515.      effects, no matter how fast the computer is.  Some keys were
  516.      reassigned from their early-beta meanings to ones which made
  517.      sense, and the regeneration effect became preceded by one of
  518.      four random screen clears ("None", "Fly-Back", "Peel-Back", or
  519.      "Washout").  Finally, I took the palette out of the data file
  520.      and generated it randomly, as by this point I was rather sick
  521.      of the default (revision 1.1) palette, no matter how good it
  522.      looked.  During Beta testing I figured out how to speed up the
  523.      'flame' effects with little cost to the effect itself.  They
  524.      now run twice as fast as before, and the release of this
  525.      revision will be delayed accordingly (I feel it important to
  526.      include this improvement in this release).  As per the request
  527.      of a certain beta-tester, tinting was added to the "Clear
  528.      Crystal" globe and the name changed to *Tinted* ("I can't see
  529.      the little clear ball bouncing around without straining my
  530.      eyes!").  Told you a lot has happened since last revision! 
  531.      Oh!  Packaging!  TPLAS20.ZIP contains the entirety of the
  532.      unregistered version of Tom's Plasma, Revision 2.0, as well as
  533.      the Demonstration version for use in certain business settings
  534.      (see above, "If You Are a Business").  Also included is the
  535.      source for TPLAS11 as an example to programmers of the Plasma
  536.      effect, such that the TPLAS20 package can replace the TPLAS11
  537.      package in circulation with no loss of utility.
  538.  
  539. March 19, 1994:  Revision 1.1
  540.  
  541.      Fixed all bugs which had caused anomalies in the fractal
  542.      (involved overflow of byte values).  Shrunk the data file by
  543.      about 28k by reducing the palette stored to that which we used
  544.      (four full palettes, not 40).  Added lots of keyboard
  545.      commands:  <Space> to toggle swim window on and off, <Enter>
  546.      for a new fractal; '1', '2', and '3' for progressively
  547.      smoother fractals ('1' is default).  <Esc> is now the only key
  548.      which exits.  This is also the first version to be uploaded
  549.      for public consumption (I had 1.0 all packaged and ready to
  550.      go, then decided I'd better fix those bugs ...  and I suppose
  551.      I got carried away ...  :->  ).  Source code, for what it's
  552.      worth, included in package, along with data file generator
  553.      source and executable.  Oh, I cleaned up the code a bit as
  554.      well, using the ARG directive rather than obscure equates,
  555.      adding a few helpful comments, etc.
  556.  
  557. March 3, 1994:  Revision 1.0
  558.  
  559.      The first working version!  Start it up, watch it go!  Hit any
  560.      key and it's outta there!  Simple, but cool.  Generates Plasma
  561.      Fractal, starts Swimming effect.  Then Leaves.  Never actually
  562.      released.
  563.